# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: Ariadne Conill <ariadne@dereferenced.org>

# TODO: support the GUI installer, wizard, etc.  For now, it's just the core
# image mastering tools.  Upstream work will be needed to adapt Horizon for
# installing Alpine.  (Also, we need to teach it about apkovls still.)

pkgname=horizon
pkgver=0.9.3
pkgrel=0
pkgdesc="installation environment and image mastering tools for APK-based distributions"
url="https://horizon.adelielinux.org/"
arch="all !s390x"
options="!check"  # Unpackaged dependency ruby-aruba.
license="AGPL-3.0+"
depends=""
checkdepends="ruby-aruba ruby-rspec valgrind"
makedepends="bcnm-dev boost-dev cmake curl-dev eudev-dev libarchive-dev
	linux-headers parted-dev skalibs-dev util-linux-dev libxkbfile-dev"
subpackages="$pkgname-image $pkgname-dbg $pkgname-dev $pkgname-doc
	$pkgname-tools"
source="https://distfiles.adelielinux.org/source/horizon-$pkgver.tar.xz
	mips64-host.patch"

build() {
	if [ "$CBUILD" != "$CHOST" ]; then
		CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
	fi
	cmake \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DBUILD_SHARED_LIBS=True \
		-DBUILD_TOOLS=ON \
		-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
		-DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-format-truncation" \
		-DCMAKE_C_FLAGS="$CFLAGS" \
		-DINSTALL=ON \
		${CMAKE_CROSSOPTS} \
		-Bbuild
	make -C build
}

check() {
	CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}

package() {
	make DESTDIR="$pkgdir" -C build install

	# horizon is not yet supported for building ISOs, so delete it for now
	rm -rf "$pkgdir"/usr/share/horizon/iso
}

image() {
	pkgdesc="Tools for generating images using HorizonScript"
	depends="mtools"
	mkdir -p "$subpkgdir"/usr/bin
	mkdir -p "$subpkgdir"/usr/lib
	mkdir -p "$subpkgdir"/usr/share/horizon

	mv "$pkgdir"/usr/bin/hscript-image "$subpkgdir"/usr/bin/
	mv "$pkgdir"/usr/lib/libhi-backends.so "$subpkgdir"/usr/lib/
#	mv "$pkgdir"/usr/share/horizon/iso "$subpkgdir"/usr/share/horizon/
}

qt5() {
	pkgdesc="Qt 5 installation wizard for Adélie Linux"
	depends="horizon"
	mkdir -p "$subpkgdir"/etc/horizon
	mkdir -p "$subpkgdir"/usr/bin
	mkdir -p "$subpkgdir"/var/log/horizon

	for _bin in horizon-ppc64-detect horizon-qt5 horizon-run-qt5; do
		mv "$pkgdir"/usr/bin/$_bin "$subpkgdir"/usr/bin/
	done
}

tools() {
	pkgdesc="Tools for authoring HorizonScript files"
	mkdir -p "$subpkgdir"/usr/bin

	for _bin in hscript-fromjson hscript-simulate hscript-validate; do
		mv "$pkgdir"/usr/bin/$_bin "$subpkgdir"/usr/bin/
	done
}

wizard() {
	pkgdesc="Wizard to generate a HorizonScript for another computer"

	make DESTDIR="$subpkgdir" -C "$builddir"/build-wizard install
	rm -r "$subpkgdir"/usr/include
	rm -r "$subpkgdir"/usr/lib
	rm -r "$subpkgdir"/usr/share
}

boot() {
	pkgdesc="Boot to Horizon"
	depends="horizon-qt5 horizon kwin qt5ct sddm
	netsurf partitionmanager xterm"

	mkdir -p "$subpkgdir"/etc/profile.d
	mkdir -p "$subpkgdir"/etc/sddm.conf.d
	mkdir -p "$subpkgdir"/etc/xdg/qt5ct
	mkdir -p "$subpkgdir"/usr/bin
	mkdir -p "$subpkgdir"/usr/share/qt5ct/qss
	mkdir -p "$subpkgdir"/usr/share/xsessions

	cat >"$subpkgdir"/etc/profile.d/horizon-qt5.sh <<PROFILE
#!/bin/sh
export QT_QUICK_BACKEND=software
export QT_QPA_PLATFORMTHEME=qt5ct
PROFILE
	chmod 755 "$subpkgdir"/etc/profile.d/horizon-qt5.sh

	install -D -m644 "$builddir"/boot/horizon.sddm.conf \
		"$subpkgdir"/etc/sddm.conf.d/horizon.conf

	install -D -m755 "$builddir"/boot/start-horizon-qt5 \
		"$subpkgdir"/usr/bin/start-horizon-qt5

	install -D -m644 "$builddir"/boot/qt5ct.conf \
		"$subpkgdir"/etc/xdg/qt5ct/qt5ct.conf
	install -D -m644 "$builddir"/boot/horizon.qss \
		"$subpkgdir"/usr/share/qt5ct/qss/horizon.qss

	install -D -m644 "$builddir"/boot/horizon-session.desktop \
		"$subpkgdir"/usr/share/xsessions/horizon.desktop
}

sha512sums="99c1d939abc33c4a072712e75c6c8ada16deb1fe59b9da839dffd695a0d40dbf48499cc00751285300127a7fc701e8e1c434e9f8a222f1981ccbebd6ee72e43e  horizon-0.9.3.tar.xz
b3f78b967dd2238270b929c3528705fad6c61bf1b5a1c35ad6ba9d68fd8ef9896449c21ad8ee1a390fb25f185abeafa30c6ca593e2c338203343799eda213fe4  mips64-host.patch"
